export function getStorageByKey(key) {
  if (localStorage.getItem(key)) return JSON.parse(localStorage.getItem(key))
}
export function setStorageByKey(key, data) {
  localStorage.setItem(key, JSON.stringify(data))
}
export function removeRegion() {
  localStorage.clear()
}
export const dateFtt = (date, fmt = 'yyyy-MM-dd hh:mm:ss') => {
  var o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds(),
    'q+': Math.floor((date.getMonth() + 3) / 3),
    'S': date.getMilliseconds()
  }
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  for (var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
  }
  return fmt
}
// 报警类型，0=行驶异常告警，1=开票异常告警，2=上牌异常告警，3=定位异常告警，4=无出行中心售卖告警 ,
const alarmTypeMap = {
  0: '行驶异常告警',
  1: '开票异常告警',
  2: '上牌异常告警',
  3: '定位异常告警',
  4: '无出行中心售卖告警'
}
// 报警是否有效0=未下发，1=已下发 ,
const alarmSendStatusMap = {
  0: '未下发',
  1: '已下发'
}
// buyType (integer, optional): 购车性质 0=公共，1=私人,等同于页面的购车领域字段 ,
const buyTypeMap = {
  0: '公共',
  1: '私人'
}
// localInvoicing (integer, optional): 是否本店开票0=异地 1=本地 ,
const localInvoicingMap = {
  0: '异地',
  1: '本地'
}
// appealHandleStatus (integer, optional): 申诉处理状态，0=未提交，1=审核中，2=已超时，3=驳回 ,
const appealHandleMap = {
  0: '未提交',
  1: '审核中',
  2: '已超时',
  3: '驳回'
}
// appealStatus (integer, optional): 申诉状态，0否1是 ,
const appealStatusMap = {
  0: '否',
  1: '是'
}
// spanBigArea (integer, optional): 是否跨大区，0否1是 ,
const spanBigAreaMap = {
  0: '否',
  1: '是'
}
// useType (integer, optional): 使用性质，0=营运，1=非营运，2=出租客运 ,
const useTypeMap = {
  0: '营运',
  1: '非营运',
  2: '出租客运'
}
const stockInStatusMap = {
  0: '采购入库',
  1: '调拨入库',
  2: '退车入库'
}
const stockOutStatusMap = {
  0: '销售出库',
  1: '调拨出库',
  2: '退车出库'
}
const dealerTypeMap = {
  0: '出行中心店',
  1: '非出行中心店'
}
const vehicleLastStatusMap = {
  '0': '发运出库',
  '1': '车辆入库',
  '2': '车辆出库',
  '3': '已开票',
  '4': '已上牌'
}
const handleStatusMap = {
  0: '未处理',
  1: '自动处理',
  2: '人工处理',
  3: '申诉处理'
}
export const exportExcelByBlob = (data, fileName) => {
  if (window.navigator.msSaveOrOpenBlob) {
    navigator.msSaveBlob(data, fileName)
  } else {
    var link = document.createElement('a')
    link.href = URL.createObjectURL(data)
    link.download = fileName
    link.click()
    // 释放内存
    URL.revokeObjectURL(link.href)
  }
}
/**
 * 处理大批量数据渲染慢
 * @param {*} pNode 要滚动容器父节点,一般固定高度
 * @param {*} node 要滚动的容器
 * @param {*} rowHeight 每行row 的高度
 * @param {*} startIndex 开始下标
 *  @param {*} length 要渲染的总行数
 */
export const fomatComfirmStr = (startTime, endTime, createTime, status) => {
  let str = ''
  if (!status) {
    str = `此操作将禁用该白名单，您确认要继续吗?`
  } else {
    if (startTime && endTime) {
      str = `开启后，从${startTime}到今日所产生受本白名单影响的实时报警将自动处理为历史报警，请确认是否要开启?`
    } else if (!startTime && endTime) {
      str = `开启后，从${createTime}到今日所产生受本白名单影响的实时报警将自动处理为历史报警，请确认是否要开启?`
    } else {
      str = `开启后，截止到今日所产生受本白名单影响的实时报警将自动处理为历史报警，请确认是否要开启?`
    }
  }
  return str
}
export const unique_arr_by_key = (key, arr) => {
  if (Array.isArray(arr) && arr.length) {
    const map = new Map()
    for (const item of arr) {
      if (!map.has(item[key])) {
        map.set(item[key], item)
      }
    }
    return [...map.values()]
  } else {
    return []
  }
}
export {
  alarmTypeMap,
  alarmSendStatusMap,
  buyTypeMap,
  localInvoicingMap,
  appealHandleMap,
  appealStatusMap,
  spanBigAreaMap,
  useTypeMap,
  stockInStatusMap,
  stockOutStatusMap,
  dealerTypeMap,
  vehicleLastStatusMap,
  handleStatusMap
}
